package com.kefu.chat.model;

import java.io.Serializable;

import javax.validation.constraints.NotEmpty;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@TableName(value="chat_session_msg")
@ApiModel(description="会话消息")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ChatSessionMsg implements Serializable {
    /**
     * 主键
     */
    @TableId(value="id")
    @NotEmpty
    @ApiModelProperty(name = "id", value = "主键")
    private String id;

    /**
     * 会话id
     */
    @TableField(value = "session_id")
    @ApiModelProperty(name = "sessionId", value = "会话id")
    private String sessionId;

    /**
     * 用户id
     */
    @TableField(value = "user_id")
    @ApiModelProperty(name = "userId", value = "用户id")
    private String userId;

    /**
     * 租户id
     */
    @TableField(value = "tenant_id")
    @ApiModelProperty(name = "tenantId", value = "租户id")
    private String tenantId;

    /**
     * 发送者id
     */
    @ApiModelProperty(name = "sender", value = "发送者id")
    private String sender;

    /**
     * 发送者名字
     */
    @TableField(value = "sender_name")
    @ApiModelProperty(name = "senderName", value = "发送者名字")
    private String senderName;

    /**
     * 发送者类型：1用户，2客服，3机器人，4系统
     */
    @TableField(value = "sender_type")
    @ApiModelProperty(name = "senderType", value = "发送者类型：1用户，2客服，3机器人，4系统")
    private Integer senderType;

    /**
     * 接收者id
     */
    @ApiModelProperty(name = "receive", value = "接收者id")
    private String receive;

    /**
     * 接收者类型：1=用户，2=客服，3=机器人
     */
    @TableField(value = "receive_type")
    @ApiModelProperty(name = "receiveType", value = "接收者类型：1用户，2客服，3机器人")
    private Integer receiveType;


    @TableField(value = "msg_type")
    @ApiModelProperty(name = "msgType", value = "消息类型：1.文字，2图片，3富文本，4文件，5音频，6视频，7商品卡片，8订单卡片")
    private Integer msgType;

    /**
     * 消息时间
     */
    @TableField(value = "msg_time")
    @ApiModelProperty(name = "msgTime", value = "消息时间")
    private Long msgTime;

    /**
     * 机器人推荐问题列表
     */
    @TableField(value = "robot_suggest")
    @ApiModelProperty(name = "robotSuggest", value = "机器人推荐问题列表")
    private String robotSuggest;

    /**
     * 消息内容
     */
    @TableField(value = "msg_content")
    @ApiModelProperty(name = "msgContent", value = "消息内容")
    private String msgContent;

    /**
     * 文件名字
     */
    @TableField(value = "file_name")
    @ApiModelProperty(name = "fileName", value = "文件名字")
    private String fileName;

    /**
     * 机器人回答类型
     */
    @TableField(value = "answer_type")
    @ApiModelProperty(name = "answerType", value = "机器人回答类型")
    private Integer answerType;

    /**
     * 客服id
     */
    @TableField(value = "admin_id")
    @ApiModelProperty(name = "adminId", value = "客服id")
    private String adminId;

    /**
     * 机器人id
     */
    @TableField(value = "robot_no")
    @ApiModelProperty(name = "robotNo", value = "机器人id")
    private Integer robotNo;

    /**
     * 词条id
     */
    @TableField(value = "doc_id")
    @ApiModelProperty(name = "docId", value = "词条id")
    private String docId;

    /**
     * 模式
     */
    @TableField(value = "doc_pattern")
    @ApiModelProperty(name = "docPattern", value = "模式：0单轮问题，1多轮问题")
    private Integer docPattern;

    /**
     * 多轮词条节点
     */
    @TableField(value = "doc_node")
    @ApiModelProperty(name = "doc_node", value = "多轮词条节点")
    private String docNode;

    /**
     * 敏感词内容
     */
    @TableField(value = "sensitive_words")
    @ApiModelProperty(value = "敏感词内容")
    private String sensitiveWords;

    /**
     * 敏感词标志
     */
    @TableField(value = "sensitive_flag")
    @ApiModelProperty(value = "敏感词标志 0=无，1=有")
    private Integer sensitiveFlag;

    /**
     * 消息撤回标志
     */
    @TableField(value = "recall_flag")
    @ApiModelProperty(value = "消息撤回标志 0=无，1=有")
    private Integer recallFlag;

    /**
     * 音频时长
     */
    @ApiModelProperty(value="音频时长，秒")
    private Integer audioDuration;

    /**
     * 消息已读未读
     */
    @TableField(value = "read_flag")
    @ApiModelProperty(value = "消息已读未读 0=未读，1=已读")
    private Integer readFlag;

    /**
     * 点踩点赞
     */
    @TableField(value = "doc_comment")
    @ApiModelProperty(value = "知识库点赞点踩 0=踩，1=赞")
    private Integer docComment;

    /**
     * 系统消息展示位置
     */
    @TableField(value = "client_type")
    @ApiModelProperty(value = "系统消息展示位置 1=坐席端，2=客户端，3=两端都显示")
    private Integer clientType;

    /**
     * 系统消息展示位置
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "词条命中情况")
    private Integer count;
    private static final long serialVersionUID = 1L;
}